<?php

/**
 * 统一失败返回方法
 *
 * @param $msg 提示消息
 * @param $data 响应数据
 * @param $other_result 其他一级数组数据
 * @param $code 错误码，默认0
 * @return \support\Response
 */
function error($msg = '', $data = [], $other_result = [], $code = 0)
{
    $result = [
        'code' => $code,
        'msg' => $msg,
        'data' => $data,
    ];

    $result = array_merge($result, $other_result);
    return json($result);
}

/**
 * 统一成功返回方法
 * @param $msg 提示消息
 * @param $data 相应数据
 * @param $other_result 其他一级数组数据
 * @param $code 默认为1
 * @return \support\Response
 */
function success($msg = '', $data = [], $other_result = [], $code = 1)
{
    $result = [
        'code' => $code,
        'msg' => $msg,
        'data' => $data,
    ];

    $result = array_merge($result, $other_result);
    return json($result);
}

/**
 * 密码加密方法
 * @param string $pw 要加密的原始密码
 * @param string $salt 加密salt
 * @return string
 */
function get_password($pw, $salt = ''): string
{
    if (empty($salt)) {
        $salt = getenv('DB_PWD_SALT') ?? '';
    }
    $result = "###" . md5(md5($salt . $pw));
    return $result;
}

/**
 * 随机字符串生成
 * @param int $len 生成的字符串长度
 * @return string
 */
function get_random_string($len = 6): string
{
    $chars = [
        "a",
        "b",
        "c",
        "d",
        "e",
        "f",
        "g",
        "h",
        "i",
        "j",
        "k",
        "l",
        "m",
        "n",
        "o",
        "p",
        "q",
        "r",
        "s",
        "t",
        "u",
        "v",
        "w",
        "x",
        "y",
        "z",
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "H",
        "I",
        "J",
        "K",
        "L",
        "M",
        "N",
        "O",
        "P",
        "Q",
        "R",
        "S",
        "T",
        "U",
        "V",
        "W",
        "X",
        "Y",
        "Z",
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9"
    ];
    $charsLen = count($chars) - 1;
    shuffle($chars);    // 将数组打乱
    $output = "";
    for ($i = 0; $i < $len; $i++) {
        $output .= $chars[mt_rand(0, $charsLen)];
    }
    return $output;
}

function le_json($data = [])
{
    return json_encode($data, JSON_UNESCAPED_UNICODE);
}

/**
 * 转化图片的文件路径，为可以访问的url
 * @param string $file 文件路径，数据存储的文件相对路径
 * @return string 图片链接
 */
function get_image_url($file)
{
    if (empty($file)) return '';

    if (strpos($file, "http") === 0 || strpos($file, "https") === 0) {
        return $file;
    } else if (strpos($file, "/") === 0) {
        return getenv('DOMAIN') . $file;
    }

    return '';
}
